package com.uduemc.biso.core.utils;

import java.util.Map;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 
 * @Title: JsonResult.java
 * @Package com.uduemc.utils
 * @Description: 自定义响应数据结构 这个类是提供给门户，ios，安卓，微信商城用的
 *               门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式（类，或者list） 其他自行处理 200：表示成功
 *               500：表示错误，错误信息在msg字段中 501：bean验证错误，不管多少个错误都以map形式返回
 *               502：拦截器拦截到用户token出错 555：异常抛出信息
 * @author uduemc
 * @date 2016年4月22日 下午8:33:36
 * @version V1.0
 */
@Data
@Accessors(chain = true)
@ToString
public class RestResult {

	// 响应业务状态
	private int code;

	// 响应message消息
	private Map<String, Object> message;

	// 响应中的数据
	private Object data;

	// clazz
	private String clazzName;

	// 是否是list
	private boolean islist = false;

	public RestResult(int code) {
		this.code = code;
	}
	
	public RestResult() {
	}
	
	/**
	 * 401 没找到数据
	 * @return
	 */
	public static RestResult noData() {
		RestResult restResult = new RestResult(401);
		return restResult;
	}

	/**
	 * 400 请求参数错误
	 * @return
	 */
	public static RestResult error() {
		RestResult restResult = new RestResult(400);
		return restResult;
	}
	
	public static RestResult error(Map<String, Object> message) {
		RestResult restResult = new RestResult(400);
		restResult.setMessage(message);
		return restResult;
	}

	public static RestResult ok() {
		return new RestResult(200);
	}

	public static RestResult ok(Object data) {
		RestResult restResult = new RestResult(200);
		restResult.setData(data);
		return restResult;
	}

	public static RestResult ok(Object data, String clazzName) {
		RestResult restResult = new RestResult(200);
		restResult.setData(data).setClazzName(clazzName);
		return restResult;
	}

	public static RestResult ok(Object data, String clazzName, boolean islist) {
		RestResult restResult = new RestResult(200);
		restResult.setData(data).setClazzName(clazzName).setIslist(islist);
		return restResult;
	}
}
